class LiveData<T> {
  List<LiveListener<T>> _listeners = [];
  T? _mData;

  void post(T? data) {
    _mData = data;
    _notifyListeners();
  }

  void addObserver(LiveListener<T> listener) {
    _listeners.add(listener);
  }

  void _notifyListeners() {
    if (_listeners.isNotEmpty) {
      _listeners.forEach((element) {
        element.change(_mData);
      });
    }
  }

  void doDestroy() {
    _listeners.clear();
  }
}

typedef OnChange<T> = void Function(T? d);

class LiveListener<T> {
  OnChange<T> change;

  LiveListener({required OnChange<T> this.change});
//void onChange(T? t);
}
